from src.conf.base_conf import BaseConf


class RobotCmd(BaseConf):
    """机器人命令文件"""
    def __init__(self, path: str):
        super().__init__(path)

    def _reload_from_dict(self, conf_dict: dict):
        self.content = conf_dict.get("群自定义命令", [
            {
                "识别头": "开服",
                "严格匹配": True,
                "执行命令": "start"
            },
            {
                "识别头": "关服",
                "严格匹配": True,
                "执行命令": "stop"
            },
            {
                "识别头": "cmd",
                "执行命令": "cmd %p"
            },
            {
                "识别头": "添加白名单",
                "执行命令": "cmd whitelist add \"%p\"",
                "指定成员可用": []
            },
            {
                "识别头": "移除白名单",
                "执行命令": "cmd whitelist remove \"%p\"",
                "指定成员可用": []
            },
            {
                "识别头": "绑定白名单",
                "执行命令": "cmd whitelist add \"%p\"",
                "记录": "bindWl",
                "记录值": "%p",
                "限制次数": 0,
                "全员可用": True,
                "退群重置": True,
                "退群触发": "cmd whitelist remove \"%r\""
            },
            {
                "识别头": "移除绑定",
                "关联记录": "bindWl %p",
                "执行命令": [
                    "timesSearch bindWl %p",
                    "cmd whitelist remove \"%r\"",
                    "timesReset bindWl %p"
                ]
            },
            {
                "识别头": "查询绑定",
                "执行命令": "timesSearch bindWl %p",
                "全员可用": True
            },
            {
                "识别头": "在线人数",
                "严格匹配": True,
                "执行命令": "cmd list",
                "全员可用": True
            },
            {
                "识别头": "chat",
                "执行命令": "chat [§2群聊§f] <§6%n§f> %p",
                "全员可用": True
            },
            {
                "识别头": "服务器状态",
                "严格匹配": True,
                "执行命令": "status CPU信息: %cpu_count核 %cpu_freqGHz\nCPU使用: %cpu_rate%\n"
                        "内存使用: %mem_rate%\n%mem_usedMB/%mem_totalMB\n磁盘使用: %disks_info",
                "全员可用": True
            },
            {
                "识别头": "查服",
                "执行命令": "motdpe %p",
                "全员可用": True
            },
            {
                "识别头": "查云黑",
                "执行命令": "blackbe %p",
                "全员可用": True
            },
            {
                "识别头": "查xuid",
                "执行命令": "xuid %p",
                "全员可用": True
            },
            {
                "识别头": "清理记录",
                "严格匹配": True,
                "执行命令": "clearLeftMem"
            },
            {
                "识别头": "立即备份",
                "严格匹配": True,
                "执行命令": "startBak"
            },
            {
                "识别头": "重载配置",
                "严格匹配": True,
                "执行命令": "dlsload"
            },
            {
                "识别头": "DLS帮助",
                "严格匹配": True,
                "执行命令": "group 开服 -> 启动服务器\n关服 -> 关闭服务器\n在线人数 -> 查看在线成员(全员)\ncmd <命令内容> -> 执行服务器指令\n添加白名单 <玩家名> -> "
                        "添加玩家白名单\n移除白名单 <玩家名> -> 移除玩家白名单\n绑定白名单 <玩家名> -> 添加玩家白名单(全员,限制次数)\n移除绑定 <qq号> -> "
                        "移除指定qq号的绑定记录\n查询绑定 <qq号或玩家名> -> 查询指定qq号的绑定\nchat <消息内容> -> 发送消息至服务器(全员)\n服务器状态 -> 硬件使用情况("
                        "全员)\n查服 <地址> -> 基岩版motd查询(全员)\n查云黑 <qq号或玩家名> -> 云黑查询(全员)\n查xuid <玩家名> -> 根据id查xuid("
                        "全员)\n清理记录 -> 清理退群成员记录并执行设定的触发命令\n立即备份 -> 立即关服备份并重启\n重载配置 -> 重载机器人配置文件",
                "全员可用": True
            }
        ])

    def _check(self):
        if type(self.content) is not list:
            self.robot_group_cmd = []
            print("[DLS][WARN] 群消息匹配格式异常！此功能将被禁用")

    def __str__(self) -> str:
        conf_dict = {"群自定义命令": self.content}
        return self._dict_to_str(conf_dict)
